/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import Vista.Mensajes;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;

/**
 *
 * @author wualterh
 */
public class Listas {

    private LinkedList<Rutas> ListaRutas = new LinkedList<Rutas>();
    private LinkedList<Chofer> ListaChoferes = new LinkedList<Chofer>();
    private LinkedList<Viaje> ListaViajes = new LinkedList<Viaje>();
    private LinkedList<UnidadT> ListaUnidadT = new LinkedList<UnidadT>();
    private LinkedList<Socio> ListaSocio = new LinkedList<Socio>();
    private LinkedList<Cooperativa> ListaCoop = new LinkedList<Cooperativa>();
    private LinkedList<Ruta_Coop> ListaRutaCoop = new LinkedList<Ruta_Coop>();
    private LinkedList<DiasFeriados> ListaFeriados = new LinkedList<DiasFeriados>();
    private LinkedList<Multa> ListaMultas = new LinkedList<Multa>();
//------------------------------

    public LinkedList<Rutas> getListaRutas() {
        return ListaRutas;
    }

    public LinkedList<UnidadT> getListaUnidadT() {
        return ListaUnidadT;
    }

    public LinkedList<Chofer> getListaChoferes() {
        return ListaChoferes;
    }

    public LinkedList<Viaje> getListaViajes() {
        return ListaViajes;
    }

    public LinkedList<Socio> getListaSocio() {
        return ListaSocio;
    }

    public LinkedList<Cooperativa> getListaCoop() {
        return ListaCoop;
    }

    public LinkedList<Ruta_Coop> getListaRutaCoop() {
        return ListaRutaCoop;
    }

    public LinkedList<Multa> getListaMultas() {
        return ListaMultas;
    }

    public LinkedList<DiasFeriados> getListaFeriados() {
        return ListaFeriados;
    }

//****************************************
// Lista Rutas
//****************************************
    public void CargarRutas() {
        Rutas LasRutas = new Rutas();


        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null;

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Rutas.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;

            Cnt = 0;


            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        LasRutas.setCodigoR(linea);
                        break;

                    case 2:
                        LasRutas.setDestino(linea);
                        break;

                    case 3:
                        LasRutas.setDescripcionR(linea);
                        break;

                    case 4:
                        LasRutas.setEStado(linea);
                        ListaRutas.add(LasRutas);
                        break;
                    case 5:
                        LasRutas.setDuracion(linea);
                        LasRutas = new Rutas();
                        Cnt = 0;
                        break;

                }

            }

        } catch (Exception e) {
        } finally {
            // En el finally cerramos el fichero, para asegurarnos
            // que se cierra tanto si todo va bien como si salta 
            // una excepcion.
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }

    public int ExisteRutas(String CodR) {
        int i = 0, Posi = -1;

        Rutas rts;
        String CodLista;

        for (i = 0; i < ListaRutas.size(); i++) {
            rts = ListaRutas.get(i);

            CodLista = rts.getCodigoR();

            if (CodLista.equals(CodR)) {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
    }
//****************************************
// Lista Unidad de Transporte
//****************************************

    public void CargarUnidadT() {
        UnidadT unidad = new UnidadT();

        String Via;
        Integer capacidad;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null;

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Unidades.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;

            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        unidad.setPlaca(linea);
                        break;

                    case 2:
                        capacidad = Integer.parseInt(linea);
                        unidad.setCapacidad(capacidad);
                        break;

                    case 3:
                        unidad.setDescripcion(linea);
                        break;

                    case 4:
                        unidad.setCISocio(linea);
                        break;
                    case 5:
                        unidad.setCodCooperativa(linea);
                        ListaUnidadT.add(unidad);
                        unidad = new UnidadT();
                        Cnt = 0;
                        break;

                }

            }

        } catch (Exception e) {
        } finally {
            // En el finally cerramos el fichero, para asegurarnos
            // que se cierra tanto si todo va bien como si salta 
            // una excepcion.
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }
    //------------------------------

    public int ExisteUnidadT(String PlacaBus) {
        int i = 0, Posi = -1;

        UnidadT unidad;
        String PlacaLista;

        for (i = 0; i < ListaUnidadT.size(); i++) {
            unidad = ListaUnidadT.get(i);

            PlacaLista = unidad.getPlaca();

            if (PlacaLista.equals(PlacaBus)) {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
    }
//****************************************
// Lista Choferes
//****************************************

    public void CargarChoferes() {
        Chofer chofer = new Chofer();

        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null; //sirve para guardar

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Choferes.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;

            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        chofer.setCedula(linea);
                        break;

                    case 2:
                        chofer.setNombres(linea);
                        break;

                    case 3:
                        chofer.setDireccion(linea);
                        break;

                    case 4:
                        chofer.setTelefonos(linea);
                        break;

                    case 5:
                        chofer.setCISocio(linea);
                        break;

                    case 6:
                        chofer.setCodCoop(linea);
                        ListaChoferes.add(chofer);
                        chofer = new Chofer();
                        Cnt = 0;
                        break;

                }

            }

        } catch (Exception e) {
        } finally {
            // En el finally cerramos el fichero, para asegurarnos
            // que se cierra tanto si todo va bien como si salta 
            // una excepcion.
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }

    public int ExisteChofer(String CedBus) {
        int i = 0;
        Chofer chofer = new Chofer();
        String CedLista;

        for (i = 0; i < ListaChoferes.size(); i++) {
            chofer = ListaChoferes.get(i);

            CedLista = chofer.getCedula();

            if (CedLista.equals(CedBus)) {
                return i;
            }

        }

        return -1;
    }
//****************************************
// Lista Socio
//****************************************

    public void CargarSocio() {
        Socio Socios = new Socio();

        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null; //sirve para guardar

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Socio.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;
            Integer cantidad;
            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        Socios.setCedula(linea);
                        break;

                    case 2:
                        Socios.setNombre(linea);
                        break;

                    case 3:
                        Socios.setCargo(linea);
                        break;

                    case 4:
                        Socios.setCodCoop(linea);
                        ListaSocio.add(Socios);
                        Socios = new Socio();
                        Cnt = 0;
                        break;
                }

            }

        } catch (Exception e) {
        } finally {
            // En el finally cerramos el fichero, para asegurarnos
            // que se cierra tanto si todo va bien como si salta 
            // una excepcion.
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }

    public int ExisteSocio(String CedSoc) {
        int i = 0;
        Socio soc = new Socio();
        String CedLista;

        for (i = 0; i < ListaSocio.size(); i++) {
            soc = ListaSocio.get(i);

            CedLista = soc.getCedula();

            if (CedLista.equals(CedSoc)) {
                return i;
            }

        }

        return -1;
    }
//****************************************
// Lista Cooperativa
//****************************************

    public void CargarCooperativa() {
        Cooperativa coop = new Cooperativa();
        Integer impuesto, seguro;

        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null; //sirve para guardar

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Cooperativa.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;

            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        coop.setRifC(linea);
                        break;

                    case 2:
                        coop.setNombreC(linea);
                        break;

                    case 3:
                        coop.setTelefonoC(linea);
                        break;
                    case 4:
                        impuesto = Integer.parseInt(linea);
                        coop.setImpuestoC(impuesto);
                        break;
                    case 5:
                        seguro = Integer.parseInt(linea);
                        coop.setSeguroC(seguro);
                        ListaCoop.add(coop);
                        coop = new Cooperativa();
                        Cnt = 0;
                        break;
                }

            }
        } catch (Exception e) {
        } finally {
            // En el finally cerramos el fichero, para asegurarnos
            // que se cierra tanto si todo va bien como si salta 
            // una excepcion.
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }

    public int ExisteCoop(String CodCoop) {
        int i = 0;
        Cooperativa coop = new Cooperativa();
        String CedLista;

        for (i = 0; i < ListaCoop.size(); i++) {
            coop = ListaCoop.get(i);

            CedLista = coop.getRifC();

            if (CedLista.equals(CodCoop)) {
                return i;
            }
        }

        return -1;
    }
//****************************************
// Lista Ruta Cooperativa
//**************************************** 

    public void CargarRutaCoop() {
        Ruta_Coop rtcp = new Ruta_Coop();

        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null; //sirve para guardar

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/RutaCoop.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;

            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Cnt++;

                switch (Cnt) {
                    case 1:
                        rtcp.setCodigoCp(linea);
                        break;

                    case 2:
                        rtcp.setNombreCp(linea);
                        break;
                    case 3:
                        rtcp.setCodigoR(linea);
                        break;
                    case 4:
                        rtcp.setDestinoR(linea);
                        ListaRutaCoop.add(rtcp);
                        rtcp = new Ruta_Coop();
                        Cnt = 0;
                        break;
                }

            }
        } catch (Exception e) {
        } finally {
            /* En el finally cerramos el fichero, para asegurarnos
             *  que se cierra tanto si todo va bien como si salta 
             *  una excepcion.*/
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }

//------------------------------------
//****************************************
// Lista Cooperativa
//**************************************** 
    public void CargarFeriados() {
        DiasFeriados feriados = new DiasFeriados();
        Date fecha;
        String Via;
        int Cnt;
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null; //sirve para guardar

        try {
            // Apertura del fichero y creacion de BufferedReader para poder
            // hacer una lectura comoda (disponer del metodo readLine()).
            //archivo = new File ("C:\\Arbitros.txt");

            Via = System.getProperty("user.dir") + "/src/Archivos/Feriados.txt";

            archivo = new File(Via);

            fr = new FileReader(archivo);
            br = new BufferedReader(fr);

            // Lectura del fichero
            String linea;
            Date Fecha;

            Cnt = 0;

            while ((linea = br.readLine()) != null) {
                Fecha = Validaciones.CnvStringFecha(linea);
                feriados.setFecha(Fecha);
                ListaFeriados.add(feriados);
                feriados = new DiasFeriados();
            }
        } catch (Exception e) {
        } finally {
            /* En el finally cerramos el fichero, para asegurarnos
             *  que se cierra tanto si todo va bien como si salta 
             *  una excepcion.*/
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (Exception e2) {
            }
        }
    }
    
 //--------------------------------------
  public int ExisteRutaCoop(String CodRut, String CodCoop  ) 
  {
     int i = 0;
     Ruta_Coop RuCo=new Ruta_Coop();
     String CodListaR;
     String CodListaC;

    for (i = 0; i < ListaRutaCoop.size(); i++) 
    {
      RuCo = ListaRutaCoop.get(i);

       CodListaR = RuCo.getCodigoR();
       CodListaC = RuCo.getCodigoCp();

       if (CodListaR.equals(CodRut) & CodListaC.equals(CodCoop)) 
          return i;

        }

        return -1;
    }    
    
   public int ExisteMulta(String placaV) 
  {
     int i = 0;
     Multa multa=new Multa();
     String PlacaLista;

    for (i = 0; i < ListaMultas.size(); i++) 
    {
      multa = ListaMultas.get(i);

       PlacaLista = multa.getPlacaV();

       if (PlacaLista.equals(placaV)) 
       {
           return i;
       }
       
    }
        return -1;
  }
   

   public int ExisteMultaViaje(String codViaje) 
  {
     int i = 0;
     Multa multa=new Multa();
     String codViajeLista = null;
     
    for (i = 0; i < ListaMultas.size(); i++) 
    {
      multa = ListaMultas.get(i);
      
       if (multa.getCodViaje().equals(codViaje)) 
       {
           return i;
       }
       
    }
        return -1;
  }
   
   public int ExisteViaje(String CodCoop) {
        int i = 0;
        Cooperativa coop = new Cooperativa();
        String CedLista;

        for (i = 0; i < ListaCoop.size(); i++) {
            coop = ListaCoop.get(i);

            CedLista = coop.getRifC();

            if (CedLista.equals(CodCoop)) {
                return i;
            }
        }

        return -1;
    }
   public int UltimoViajeVehiculo(String placa) {
       //---------ORDENAR VIAJES POR FECHA DESCENDENTE--------

        Viaje viaje_i = new Viaje();
        Viaje viaje_j = new Viaje();

        for (int i = 0; i < ListaViajes.size() - 1; i++) 
        {
            for (int j = i + 1; j < ListaViajes.size(); j++) 
            {
                viaje_i = ListaViajes.get(i);
                viaje_j = ListaViajes.get(j);

                if (viaje_i.getFechaSalida().compareTo(viaje_j.getFechaSalida()) < 0) 
                {
                    ListaViajes.set(i, viaje_j);
                    ListaViajes.set(j, viaje_i);
                }
            }
        }
        //------------------------
       
       
        Viaje viaje = new Viaje();
        String placaLista;

        for (int i = 0; i < ListaViajes.size(); i++) {
            viaje = ListaViajes.get(i);

            placaLista = viaje.getPlacaVehiculo();

            if (placaLista.equals(placa)) {
                return i;
            }
        }

        return -1;
    }    
public int ExisteEnDFeriado(Date diaFeriado) 
  {
     int i = 0;
     
     
     Date diaFerdLista;
    for (i = 0; i < ListaFeriados.size(); i++) 
    {
      diaFerdLista = ListaFeriados.get(i).getFecha();
      
       if (diaFerdLista.equals(diaFeriado)) 
       {
           return i;
       }
       
    }
        return -1;
  }     
}

